#ifndef KITHARA_QT_USER_OPERATION_H
#define KITHARA_QT_USER_OPERATION_H

#include <iostream>
#include <QStringList>
#include "Kernel/kernel_operation.h"

typedef struct KitharaSystemInfo {
    int total_cpu_count{0};                  // 总CPU个数
    int shared_cpu_count{0};                 // 共享CPU个数
    QStringList net_work_list;               // Kithara支持的网卡名称
} KitharaSystemInfo;

// C函数供C++调用接口
#ifdef __cplusplus
extern "C" {
#endif

// 打开驱动
KSError GetKitharaSystemInfo(KitharaSystemInfo &info);

/*
 * 选择网络设备并打开适配器,创建主站,创建共享内存，加载内核Dll,启动程序
 * @param processor  目标CPU号
 * @param index      目标网卡号
 * @param file_path  从站描述文件路径
 * @return           操作结果
 */
KSError StartRunning(int processor, int index, const std::string &file_path);

// 获取PDO IO数据
void GetPDOData(DemoPODIOData &io_pdo_data);

// 设置IO输出值
void SetOutPutValue(int value_out);

// SDO 下发
KSError SDO_Download(int obj_index, void *data,int size);

// 获取SDO数据
KSError SDO_GetData(int obj_index, void *data,int &size);

// 退出应用
void ExitApp();

#ifdef __cplusplus
}
#endif

#endif //KITHARA_QT_USER_OPERATION_H
